package com.koron.tool.mapper;

import com.koron.tool.bean.ToolBean;
import com.koron.tool.bean.ToolGroupBean;
import com.koron.tool.bean.ToolQuery;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;
import java.util.Map;


public interface ToolAccountsManagerMapper {
    Integer insertGroup(ToolGroupBean bean);

    Integer getParent(@Param("parent") String parent);

    ToolGroupBean getGroup(@Param("id") String id);

    ToolGroupBean getGroupByCode(@Param("code") String code);

    Integer checkNameExist(ToolGroupBean bean);

    Integer checkCodeExist(ToolGroupBean bean);

    Integer checkCodeExistWithId(ToolGroupBean bean);

    Integer updateGroup(ToolGroupBean bean);

    Integer getMaxGroupOrder(@Param("parent") String parent);

    Integer checkChild(@Param("id") String id);

    Integer checkTool(@Param("id") String id);

    Integer deleteGroup(@Param("id") String id);

    List<ToolGroupBean> getChildList(@Param("id") String id);

    List<ToolBean> getToolList(@Param("id") String id);

    Integer insertTool(ToolBean bean);

    Integer updateTool(ToolBean bean);

    @Update("UPDATE t_tool SET warehouseId=#{warehouseId},warehouse=#{belongUnitId} WHERE toolTyleCode=#{goodsShelfCode}")
    Integer updateToolByGoodsShelfCode(@Param("goodsShelfCode") String goodsShelfCode, @Param("warehouseId") String warehouseId
            , @Param("belongUnitId") String belongUnitId);

    @Update("UPDATE t_tool SET warehouse=#{belongUnitId} WHERE warehouseId=#{warehouseId}")
    Integer updateToolByWarehouseId(@Param("warehouseId") String warehouseId, @Param("belongUnitId") String belongUnitId);

    ToolBean getTool(@Param("id") String id);

    Integer deleteTool(@Param("id") String id);

    /**
     * 批量删除工器具
     * @param map
     * @return
     */
    Integer deleteToolBatch(Map map);

    Integer scrapTool(@Param("id") String id);

    List<ToolGroupBean> getAllStationGroup();

    /**
     * 获取公司、场站合集
     * @return
     */
    @Select("SELECT * FROM t_tool_parameter WHERE level IN (1, 2) ORDER BY `order` ASC,createTime DESC")
    List<ToolGroupBean> getAllUnitGroup();

    List<ToolGroupBean> getChildGroup(@Param("id") String id);

    Integer getMaxToolOrder();

    ToolBean getRFID(@Param("RFID") String RFID);

    List<ToolGroupBean> getChild(ToolQuery query);

    List<ToolBean> getTools(ToolQuery query);

    /**
     * 获取库房盘点准备状态
     * @return
     */
    Integer getInventoryPreparation(String warehouseId);

    /**
     * 获取工器具的库存状态（在库/出库）
     * @param id
     * @return
     */
    String getInventoryStatus(String id);



    /**
     * 根据code查名称
     * @param code
     * @return
     */
    ToolGroupBean getToolGroupByCode(@Param("code") String code);

    /**
     * 根据code修改工具状态
     * @param code
     * @param scrapDate
     * @return
     */
    Integer updateTooleStatus(@Param("code") String code, @Param("scrapDate") long scrapDate);

    /**
     * 检验工具是否已经提交报废单
     * @param id
     * @return
     */
    Integer getToolScrapStatus(@Param("id") String id);


    /**
     * 组织子集数量
     * @param child
     * @return
     */
    List<Map<String, String>> getChildCount(@Param("child") List<ToolGroupBean> child);

    /**
     * 工具数量
     * @param child
     * @return
     */
    List<Map<String, String>> getChildToolCount(@Param("child") List<ToolGroupBean> child);

    /**
     * 获取今天到达检验期的工具
     * @return
     */
    List<ToolBean> getTodayInspectionTool();

    /**
     * 获取今天到达报废期的工具
     * @return
     */
    List<ToolBean> getTodayScrapTool();
}
